package ClassDesignerTest;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * 一、map集合特点：
 *     1、Interface Map<K,V> K：键的类型 ，  V： 值的类型
 *     2、不包含重复的键
 *     3、每个键可以映射到最多一个值，所以相同键创建的对象，后者会覆盖前者
 *   创建Map集合的对象：  多态的方式  具体的实现类HashMap
 *   
 * 二、Map集合的基本功能：
 *     1、put(k,v); 添加元素
 *     2、remove(k); 根据键删除键值对元素
 *     3、clear(); 移除所有的键值对元素
 *     4、containsKey(k); 判断集合中是否包含指定的键
 *     5、containsValue(v); 判断集合中是否包含指定的值
 *     6、isEmpty(); 判断集合是否为空
 *     7、size(); 集合的长度，也就是集合中键值对的个数
 *     8、get(k); 根据键获取值
 *     9、keySet(); 获取所有键的集合 Set<K>类型
 *     10、values(); 获取所有值的集合 Collection<v>类型
 *     11、entrySet(); 获取所有键值对的集合 Set<Map.Entry<k,v>>类型
 *     
 * 三、Map集合遍历方式
 *    1、先获得所有键的集合，再通过每一个键找到对应的值
 *      
 *    2、先获得键值对对象的集合，再通过getKey和getValue方法获得对应的键和值
 *   
 */
public class MapTest {
  public static void main(String[] args) {
//	创建集合对象
	  Map<String, String> map = new HashMap<String,String>();
	  
//	put(K,V) 将指定的值与该映射中的指定键相关联
	  map.put("001", "jzy");
	  map.put("002", "hhh");
	  map.put("003", "xxx");
	  
//	  输出集合对象
	  System.out.println(map);
	  
	  /**
	   * 遍历方法一
	   */
	  Set<String> keys= map.keySet();
	  for(String key :keys) {
		  String value = map.get(key);
		  System.out.println(key +" " + value);
	  }
	  
	  System.out.println("--------");
	  
	  /**
	   * 遍历方法二
	   */
	  
	  Set<Map.Entry<String,String>> entrySet = map.entrySet();
	  for(Entry<String,String> entryset : entrySet) {
		  String key = entryset.getKey();
		  String value = entryset.getValue();
		  System.out.println(key + " " + value);
	  }
}

@Override
public String toString() {
	return "MapTest [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
			+ "]";
}
  
}
